import {
	message
} from "./message.js"
let viewContent = null
let _platform = uni.getSystemInfoSync().platform;
function createView(title, content) {
	if (_platform != 'android') return
	viewContent = new plus.nativeObj.View('window', {
		width: '80%',
		height: '200px',
		left: '10%',
		top: '10%',
		radius: '16px',
		backgroundColor: 'rgba(0,0,0,0.7)'
	})
	viewContent.draw([{
			tag: 'font',
			id: 'title',
			text: title + '权限提示',
			textStyles: {
				color: '#ffffff',
				size: '18px'
			},
			position: {
				top: "-40px"
			}
		},
		{
			tag: 'font',
			id: 'titles',
			text: content,
			textStyles: {
				color: '#ffffff',
				whiteSpace: 'normal',
				margin: '20rpx',
				align: 'left',
				size: '14px'
			},
			position: {
				left: '20px',
				right: '-10px'
			}
		},
	])
	viewContent.show()
}
let timer = null
let key = false
let inTimer = null

clearInter()

function clearInter() {
	if (inTimer) {
		clearInterval(inTimer)
		inTimer = null
	}
}

// api请求完成关闭弹窗
function completeFun() {
	inTimer = setInterval(() => {
		if (viewContent) {
			viewContent.hide()
			viewContent = null
			clearInterval(inTimer)
			inTimer = null
		}
	}, 100)
}

// api失败封装方法 无权限提示
function noPerTips(info, msg) {
	console.log(info, msg, '11111111');
	key = true
	clearTimeout(timer)
	timer = null
	if (info.errMsg.indexOf('No Permission') > -1) {
		message.info(msg)
	} else {
		// message.info(msg)
	}
}

// 拦截相机api 进行打开提示信息
uni.addInterceptor('chooseImage', {
	invoke(res) {
		let title = '相机或相册提示'
		let content = '请求访问相机或相册权限，使用拍照或选择或选择照片功能，用于上传头像，意见反馈上传图片，上传商品'
		key = false
		clearInter()
		timer = setTimeout(() => {
			if (!key) createView(title, content)
		}, 1000)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开相机权限')
	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})

// 拦截扫码
uni.addInterceptor('scanCode', {
	invoke(res) {
		let title = '相机或存储提示'
		let content = '请求申请存储、相机权限，使用相机扫码,用于扫描用户二维码，是否允许'
		key = false
		clearInter()
		timer = setTimeout(() => {
			if (!key) createView(title, content)
		}, 1000)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开存储权限')

	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})

// 拦截定位
uni.addInterceptor('getLocation', {
	invoke(res) {
		let title = '位置提示'
		let content = '请求获取你的地理位置,您可以查看附近的服务,如拒绝无法正常访问，是否访问？'
		key = false
		clearInter()
		// 这个项目首页有自动获取定位，如果不需要可以去掉
		let isGet = uni.getStorageSync('isGetLocation')
		console.log(isGet);
		timer = setTimeout(() => {
			if (!key && isGet != 'yes') createView(title, content)
		}, 1000)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开定位权限')
	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})

// 拦截定位
uni.addInterceptor('chooseLocation', {
	invoke(res) {
		let title = '位置提示'
		let content = '请求获取位置权限，使用地图选点功能，用于添加或编辑用户地址信息，是否允许'
		key = false
		clearInter()
		// 这个项目首页有自动获取定位，如果不需要可以去掉
		let isGet = uni.getStorageSync('isGetLocation')
		console.log(isGet, '地图选点');
		timer = setTimeout(() => {
			if (!key && isGet != 'yes') createView(title, content)
		}, 1000)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开定位权限')
	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})

// 拦截拨号
uni.addInterceptor('makePhoneCall', {
	invoke(res) {
		let title = '拨号提示'
		let content = '请求获取拨号权限，用于联系平台或联系用户'
		key = false
		clearInter()
		timer = setTimeout(() => {
			if (!key) createView(title, content)
		}, 500)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开拨打电话权限')
	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})

// 拦截保存图片
uni.addInterceptor('saveImageToPhotosAlbum', {
	invoke(res) {
		let title = '存储或相册提示'
		let content = '请求申请存储、相册权限，保存图片到手机相册'
		key = false
		clearInter()
		timer = setTimeout(() => {
			if (!key) createView(title, content)
		}, 1000)
	},
	fail(e) {
		// 没有权限
		noPerTips(e, '请打开存储、相册权限')
	},
	complete(e) {
		console.log(e, 'complete');
		completeFun()
	}
})